const query = require('./db.js')
const util = require('../util/util.js')
// 角色类
class Role {
  // 创新新数据
  static createNew(model) {
    return {
      name: model.name,
      remark: model.remark,
    }
  }
  // 添加角色数据
  static create(arr, callBack) {
    const sqlData = util.convertSQLInsert(arr)
    let sql = `INSERT INTO app_role ${sqlData}; `
    query(sql, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      callBack()
    })
  }
  // 根据ID查询数据
  static getById(id, callBack) {
    query(`SELECT * FROM app_role WHERE id = ${id};`, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      callBack(null, res[0])
    })
  }
  // 获取角色列表
  static getList(callBack) {
    query(`SELECT * FROM app_role;`, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      callBack(null, res)
    })
  }
  // 根据用户ID查询用户绑定的角色ID
  static getRoleIds(userId, callBack) {
    query(`SELECT appRoleId FROM user_role WHERE userId = ${userId};`, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      callBack(null, res)
    })
  }
  // 更新指定角色数据
  static updateById(data, callBack) {
    const sqlData = util.convertSQLUpdate(data)
    query(`UPDATE app_role SET ${sqlData} WHERE id = ${data.id};`, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      if (res.affectedRows == 0) {
        callBack({ message: '未找到角色信息'}, null)
        return
      }
      callBack();
    })
  }
  // 删除指定角色数据
  static delete(id, callBack) {
    query(`DELETE FROM app_role WHERE id = ${id};`, (err, res) => {
      if (err) {
        callBack(err, null)
        return
      }
      if (res.affectedRows == 0) {
        callBack({ message: '未找到角色信息'}, null)
        return
      }
      callBack(null, res);
    })
    
  }
}
module.exports = Role